//? 为什么要用setTimeout来模拟seInterval?因为setInterval有这些问题：
//? 每隔一段时间，将回调函数加入宏队列，等待执行，一旦不是立刻执行，比如1s的interval，在2秒后才开始处理宏队列，那么里面的函数会一下子都出来了
//? 每个 setTimeout 产生的任务会直接 push 到任务队列中；
//? 而 setInterval 在每次把任务 push 到任务队列前，都要进行一下判断(看上次的任务是否仍在队列中，如果有则不添加，没有则添加)，这就会导致某些被跳过。
//? 同时，如果出现当前调用栈在执行一个，任务队列中还有等待的，会导致setInterval中回调函数的连续执行
//? 而使用setTimeout模拟，则会保持时间间隔
function outToInter() {
    let i = 0
    return new Promise((resolve, reject) => {
        //? 首先我们需要实现setInterval，那么必须多次调用了 所以这里给个函数
        const mock = () => {
            setTimeout(() => {
                //? 循环打印
                console.log(i++)
                //? 递归
                mock()
            },1000)
        }
        //? 首次调用
        mock()
    })
}
//
outToInter().then(res => console.log(res))


//
// setInterval(() => {
//   const now = Date.now()
//   while (Date.now() - now < 2000) {
//
//   }
//   console.log(1)
// },1000)
